package com.hikeen.launcherx.functions.hotspot;//package com.jiuhong.mytvapplication.functions.hotspot;
//
//import static android.content.Context.WIFI_SERVICE;
//import static android.os.Build.VERSION_CODES.M;
//import static android.os.Build.VERSION_CODES.O;
//
//import android.app.Activity;
//import android.content.Context;
//import android.content.Intent;
//import android.content.IntentFilter;
//import android.net.ConnectivityManager;
//import android.net.Uri;
//import android.net.wifi.WifiConfiguration;
//import android.net.wifi.WifiManager;
//import android.os.Build;
//import android.os.Message;
//import android.provider.Settings;
//import android.util.Log;
//
//import androidx.annotation.RequiresApi;
//
//
//import java.lang.reflect.Method;
//
///**
// * Created by Ly
// * on 2021/7/20
// *
// * modify sqs startTethering已注掉
// */
//public class WifiApUtil {
//    private final String TAG = "WifiHostBiz";
//    private WifiManager wifiManager;
//    private String WIFI_HOST_SSID = "AndroidAP";
//    private String WIFI_HOST_PRESHARED_KEY = "12345678";// 密码必须大于8位数
//    private HotSpotStateReceiver hotSpotStateReceiver;
//    private static WifiApUtil INSTANCE;
//    public static final int REQUEST_WRITE_SETTING_CODE = 1;
//    public Context contexts;
//
//
//    public WifiApUtil(Context context) {
//        super();
//        contexts = context;
////获取wifi管理服务
//        wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//    }
//
//
//    public static synchronized WifiApUtil getInstance(Context context) {
//        if (INSTANCE == null) {
//            INSTANCE = new WifiApUtil(context);
//        }
//        return INSTANCE;
//    }
//
//    /**
//     * 判断热点开启状态
//     */
//    public boolean isWifiApEnabled() {
//        return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED;
//    }
//
//    private WIFI_AP_STATE getWifiApState() {
//        int tmp;
//        try {
//            Method method = wifiManager.getClass().getMethod("getWifiApState");
//            tmp = ((Integer) method.invoke(wifiManager));
//// Fix for Android 4
//            if (tmp > 10) {
//                tmp = tmp - 10;
//            }
//            return WIFI_AP_STATE.class.getEnumConstants()[tmp];
//        } catch (Exception e) {
//// TODO Auto-generated catch block
//            e.printStackTrace();
//            return WIFI_AP_STATE.WIFI_AP_STATE_FAILED;
//        }
//    }
//
//    public enum WIFI_AP_STATE {
//        WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED
//    }
//
//    /**
//     * wifi热点开关
//     *
//     * @param enabled true：打开 false：关闭
//     * @return true：成功 false：失败
//     */
//    public boolean setWifiApEnabled(boolean enabled) {
//        //TODO:设置热点
//        Log.d(TAG, ":开启热点");
//        try {
//            if (contexts != null) {
//                if (enabled) {
//
//                    return openAp(contexts, WIFI_HOST_SSID, WIFI_HOST_PRESHARED_KEY);
//                } else {
//                    return closeAp(contexts);
//                }
//            } else {
//                Log.d("LY_____________________", "setWifiApEnabled: WORRE");
//                return false;
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//    }
//
//
//    //注册广播接收器，用于监听热点状态变化
//    public void registerHotSpotStateReceiver(Context context) {
//        hotSpotStateReceiver = new HotSpotStateReceiver();
//        IntentFilter filter = new IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED");
//        context.registerReceiver(hotSpotStateReceiver, filter);
//        hotSpotStateReceiver.setOnWiFiStateListener(new OnHotSpotStateListener() {
//
//            @Override
//            public void onStateEnable() {
//                //TODO:热点已打开
////                Message message = Message.obtain();
////                message.what = 0x3332;//打开
////                GlobalApplication.getWindowService().mHandler.sendMessage(message);
//            }
//
//            @Override
//            public void onOpening() {
//                //TODO:热点正在打开
////                Message message = Message.obtain();
////                message.what = 0x3332;//打开
////                GlobalApplication.getWindowService().mHandler.sendMessage(message);
//            }
//
//            @Override
//            public void onStateDisable() {
//                //TODO:热点已关闭
////                Message message = Message.obtain();
////                message.what = 0x3331;//关闭
////                GlobalApplication.getWindowService().mHandler.sendMessage(message);
//
//            }
//
//            @Override
//            public void onCloseing() {
//                //TODO:热点正在关闭
////                Message message = Message.obtain();
////                message.what = 0x3331;//关闭
////                GlobalApplication.getWindowService().mHandler.sendMessage(message);
//            }
//
//        });
//    }
//
//    public void unregisterHotSpotStateReceiver(Context context) {
//        context.unregisterReceiver(hotSpotStateReceiver);
//    }
//
//
//    /**
//     * 开启便携热点, Android 7.1版本可能存在问题
//     *
//     * @param context  上下文
//     * @param ssid     便携热点SSID
//     * @param password 便携热点密码
//     */
//    public boolean openAp(Context context, String ssid, String password) {
//        Log.d(TAG, "openAp: ");
//
//        // 6.0+申请修改系统设置权限
//        if (Build.VERSION.SDK_INT >= M) {
//            if (!isGrantedWriteSettings(context)) {
//                requestWriteSettings(context);
//            }
//        }
//
//        // 8.0以下的开启方式不一样
//        if (Build.VERSION.SDK_INT >= O) {
//            return startTethering(context);
//        } else {
//            if (wifiManager == null) {
//                wifiManager = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE);
//            }
//            try {
//                // 热点的配置类
//                WifiConfiguration config = new WifiConfiguration();
//                // 配置热点的名称(可以在名字后面加点随机数什么的)
//                config.SSID = ssid;
//                config.preSharedKey = password;
//                //是否隐藏网络
//                config.hiddenSSID = false;
//                //开放系统认证
//                config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
//                config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
//                config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
//                config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
//                config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
//                config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
//                config.status = WifiConfiguration.Status.ENABLED;
//                // 调用反射打开热点
//                Method method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
//                // 返回热点打开状态
//                method.invoke(wifiManager, config, true);
//            } catch (Exception e) {
//                e.printStackTrace();
//                return false;
//            }
//            return true;
//        }
//    }
//
//
//    /**
//     * android8.0以上开启手机热点
//     */
//    private boolean startTethering(Context context) {
//        Log.d(TAG, "startTethering: ");
//        ConnectivityManager connectivityManager = (ConnectivityManager) context
//                .getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//        try {
//            Class classOnStartTetheringCallback = Class.forName("android.net.ConnectivityManager$OnStartTetheringCallback");
//            Method startTethering = connectivityManager.getClass()
//                    .getDeclaredMethod("startTethering", int.class, boolean.class, classOnStartTetheringCallback);
//            //------------
////            Object proxy = ProxyBuilder.forClass(classOnStartTetheringCallback)
////                    .handler(new InvocationHandler() {
////                        @Override
////                        public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
////                            return null;
////                        }
////                    }).build();
// //           startTethering.invoke(connectivityManager, 0, false, proxy);
//        } catch (Exception e) {
//            Log.e(TAG, "打开热点失败");
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }
//
//    /**
//     * 关闭便携热点, Android 7.1版本可能存在问题
//     */
//    public boolean closeAp(Context context) {
//        Log.d(TAG, "closeAp: ");
//
//        // 6.0+申请修改系统设置权限
//        if (Build.VERSION.SDK_INT >= M) {
//            if (!isGrantedWriteSettings(context)) {
//                requestWriteSettings(context);
//            }
//        }
//
//        // 8.0以上的关闭方式不一样
//        if (Build.VERSION.SDK_INT >= O) {
//            return stopTethering(context);
//        } else {
//            if (wifiManager == null) {
//                wifiManager = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE);
//            }
//            try {
//                Method method = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
//                method.setAccessible(true);
//                method.invoke(wifiManager, null, false);
//            } catch (Exception e) {
//                e.printStackTrace();
//                return false;
//            }
//            return true;
//        }
//    }
//
//    /**
//     * android8.0以上关闭手机热点
//     */
//    private boolean stopTethering(Context context) {
//        Log.d(TAG, "stopTethering: ");
//        ConnectivityManager connectivityManager = (ConnectivityManager) context
//                .getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//        try {
//            Method stopTethering = connectivityManager
//                    .getClass().getDeclaredMethod("stopTethering", int.class);
//            stopTethering.invoke(connectivityManager, 0);
//        } catch (Exception e) {
//            Log.e(TAG, "关闭热点失败");
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }
//
//
//    /**
//     * 返回应用程序是否可以修改系统设置
//     *
//     * @return {@code true}: yes
//     * {@code false}: no
//     */
//    @RequiresApi(api = Build.VERSION_CODES.M)
//    public boolean isGrantedWriteSettings(Context context) {
//        return Settings.System.canWrite(context);
//    }
//
//    /**
//     * 查看授权情况, 开启热点需要申请系统设置修改权限，如有必要，可提前申请
//     *
//     * @param context activity
//     */
//
//    @RequiresApi(api = Build.VERSION_CODES.M)
//    public void requestWriteSettings(Context context) {
//        if (isGrantedWriteSettings(context)) {
//            Log.e(TAG, "已授权修改系统设置权限");
//            return;
//        }
//        Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
//        intent.setData(Uri.parse("package:" + context.getPackageName()));
//        ((Activity) context).startActivityForResult(intent, REQUEST_WRITE_SETTING_CODE);
//    }
//
//}
